題目為拿掉陣列中重複的元素,且不要新增新的陣列來操作原來的陣列,最後回傳陣列長度
def remove_duplicates(nums)
nums.uniq!&.length
end
使用uniq!方法可以把重複的元素過濾掉,加驚嘆號的意思是會影響到原來矩陣的意思,不加&的話當input為空陣列時會出現以下錯誤:
NoMethodError (undefined method 'length' for nil:NilClass)
加&的話則是當沒有length方法時則不會執行,且直接回傳 nums.uniq!
var removeDuplicates = function(nums) {
for(i=0; i<nums.length;i++){
for(j=i+1; j<nums.length; j++){
if (nums[i] == nums[j]){
nums.splice(j,1)
j=j-1
}
}
}
return nums.length
};
用JavaScript寫卡住的點在於當找到相同元素時把後面的元素拿掉後,陣列長度變了,若還是照原本的index下去找的話被置換的下一個原色會被跳過,因此換完後要加一個j=j-1
小結: